/*
 * Vuelo.java
 *
 * Created on 20 de noviembre de 2007, 20:44
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fiuba.aterrizar.servidor.domain;

import com.fiuba.aterrizar.servidor.conf.ObjectFactory;
import com.fiuba.aterrizar.servidor.dal.dao.VueloDAO;
import com.fiuba.aterrizar.servidor.exception.ReservaAsientoException;
import java.util.Date;

/**
 *
 * @author Demian
 */
public class Vuelo {    
    private String codigo;
    private int codigoRutaAerea;
    private String codigoAvion;
    private Date horario;
    private int cantidadAsientosPrimera;
    private int cantidadAsientosEjecutiva;
    private int cantidadAsientosTurista;
    public static final String PRIMERA = "PRIMERA";
    public static final String EJECUTIVA = "EJECUTIVA";
    public static final String TURISTA = "TURISTA";
    
    public static Vuelo findByCodigo(String codigo){
        VueloDAO vueloDAO = (VueloDAO) ObjectFactory.getObject(VueloDAO.class);
        
        return vueloDAO.findByCodigo(codigo);
    }
    
    public void reservarAsiento(String codigoClase) throws ReservaAsientoException{        
        if (codigoClase.equals(PRIMERA)){
            if (this.cantidadAsientosPrimera <= 0){
                throw new ReservaAsientoException();
            }
            this.cantidadAsientosPrimera = this.cantidadAsientosPrimera - 1;
        }
        else if (codigoClase.equals(EJECUTIVA)){
                if (this.cantidadAsientosEjecutiva <= 0){
                    throw new ReservaAsientoException();
                }
                this.cantidadAsientosEjecutiva = this.cantidadAsientosEjecutiva - 1;
        }
        else if (codigoClase.equals(TURISTA)){
                if (this.cantidadAsientosTurista <= 0){
                    throw new ReservaAsientoException();
                }
                this.cantidadAsientosTurista = this.cantidadAsientosTurista - 1;
        }
        
        VueloDAO vueloDAO = (VueloDAO) ObjectFactory.getObject(VueloDAO.class);        
        vueloDAO.update(this);
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public int getCodigoRutaAerea() {
        return codigoRutaAerea;
    }

    public void setCodigoRutaAerea(int codigoRutaAerea) {
        this.codigoRutaAerea = codigoRutaAerea;
    }

    public String getCodigoAvion() {
        return codigoAvion;
    }

    public void setCodigoAvion(String codigoAvion) {
        this.codigoAvion = codigoAvion;
    }

    public Date getHorario() {
        return horario;
    }

    public void setHorario(Date horario) {
        this.horario = horario;
    }

    public int getCantidadAsientosPrimera() {
        return cantidadAsientosPrimera;
    }

    public void setCantidadAsientosPrimera(int cantidadAsientosPrimera) {
        this.cantidadAsientosPrimera = cantidadAsientosPrimera;
    }

    public int getCantidadAsientosEjecutiva() {
        return cantidadAsientosEjecutiva;
    }

    public void setCantidadAsientosEjecutiva(int cantidadAsientosEjecutiva) {
        this.cantidadAsientosEjecutiva = cantidadAsientosEjecutiva;
    }

    public int getCantidadAsientosTurista() {
        return cantidadAsientosTurista;
    }

    public void setCantidadAsientosTurista(int cantidadAsientosTurista) {
        this.cantidadAsientosTurista = cantidadAsientosTurista;
    }

    
    
   
    
    
}
